/**
 *  EKology - An Ecosystem Simulation Framework
 *  Copyright (C) 2008  Aarón Tavío - aaron.tavio at gmail.com - ULPGC
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

package fungusEater;

import fungusEater.datatypes.OreType;

import java.awt.Color;


/**
 * @author Aarón Tavío - aaron.tavio at gmail.com
 * @version 1.0.0 - 20081019-1700
 */
public class Config {
    //////////////////////////// GENERAL SECTION
    public static final int DEBUG_LEVEL = 0;
    public static final double PROXIMITY_THRESHOLD =                0.05;
    
    
    //////////////////////////// FUNGUS SECTION
    public static final Color A_TYPE_FUNGUS_COLOR =                 Color.RED;
    public static final Color B_TYPE_FUNGUS_COLOR =                 Color.GREEN;
    public static final Color C_TYPE_FUNGUS_COLOR =                 Color.BLUE;
    
    public static final double F_ENERGY_INIT_MAX =                  1.0;
    public static final double F_ENERGY_INIT_MIN =                  0.6;
    
    public static final double F_WEIGHT_INIT_MAX =                  0.2;
    public static final double F_WEIGHT_INIT_MIN =                  0.01;
    
    public static final double F_ENERGY_JUNIOR_DEC =                0.01;
    public static final double F_ENERGY_SENIOR_DEC =                0.05;
    
    public static final double F_GROW_RATE =                        0.0001;
    public static final double F_GROW_ENERGY_FACTOR =               1.0;
    
    public static final double F_JUNIOR_SYNTH_RATE =                0.001;
    public static final double F_SENIOR_SYNTH_RATE =                0.00001;
    
    public static final double F_BREED_ENERGY_LOST =                0.2;
    public static final int F_BREED_TIME =                          20;
    
    public static final double F_DISPERSION_FACTOR =                180;
    
    public static final double F_FEATURE_MUTATION_PROBABILITY =     0.8;
    
    public static final double F_QUALITY_DEV_UPPER_LIMIT =    1.0;
    public static final double F_QUALITY_DEV_LOWER_LIMIT =    -1.0;
    
    
    //////////////////////////// FUNGUS EATER SECTION
    public static final double FE_SIZE =                            0.4;
    
    public static final double FE_ENERGY_INIT_MAX =                 0.3; // 0.3-0.4
    public static final double FE_ENERGY_INIT_MIN =                 0.4;
    
    public static final double FE_BITE_SIZE =                       0.3;
    public static final double FE_MOVEMENT_SPEED =                  0.3; // measured in space units/milisecond
    public static final double FE_ROTATION_SPEED =                  0.005; // measured in space radians/milisecond
    
    public static final double FE_WAITING_ENERGY_FACTOR =           0.000007; // high value to let not adapted collectors die early
    public static final double FE_MOVEMENT_ENERGY_FACTOR =          0.00001;
    public static final double FE_MOVEMENT_WEIGHT_ENERGY_FACTOR =   0.00001;
    
    public static final double FE_MAX_CAPACITY_DEV_UPPER_LIMIT =    1.0;
    public static final double FE_MAX_CAPACITY_DEV_LOWER_LIMIT =    -1.0;
    
    public static final double FE_FEATURE_MUTATION_PROBABILITY =    0.4;
    
    
    //////////////////////////// ORE SECTION
    public static final double O_WEIGHT_INIT_MIN =                  10.0;
    public static final double O_WEIGHT_INIT_MAX =                  20.0;
    
    public static final Color A_TYPE_ORE_COLOR =                    Color.RED;
    public static final Color B_TYPE_ORE_COLOR =                    Color.GREEN;
    public static final Color C_TYPE_ORE_COLOR =                    Color.BLUE;
    
    
    //////////////////////////// FACTORY SECTION
    public static final int FA_COMMUNITY_SIZE =                     3;
    public static final double FA_ORE_NEEDED_TO_BUILD =             4;
    public static final OreType FA_ORETYPE_TO_BUILD =               OreType.A_TYPE;
    public static final int FA_AGENT_BUILD_TIME =                   20;
    
}
